/**
 * 
 * anthor liyingqi
 *  834777203@qq.com
 * desc H5 app 传值兼容
 */


// 生命周期
// onNativeShow onNativeHide downloadFile 下载文件
/**
 * 
 * anthor liyingqi
 *  834777203@qq.com
 * action goHome  data mineFragment 我的 msgFragment 消息 workFragment 工作台 homeFragment 首页
 * action call  data "{userId: '',type: 1}" 用户id 打视频
 * action initiateChat  data 用户id 聊天
 *  action aliPay  data 支付宝数据  
 * action wxPay  data 微信支付数据
 * action openLive  // 开播
 * action joinLive data "{userId: ''}"// 加入直播间
 * action login  // 登录
 * action activeLogin  // 主动退出登录
 * action downloadFile data:{url: ''} // 下载文件
 * action upDateUser data:{name: '',avatar: ''} // 更新头像
 */


export const isMessageGo = (params) => {
	params.webview = params.webview || 'zWebView'; // 兼容跨兄弟webview跳转页面

	if (window.NativeBridge) { // 安卓
		if (window.NativeBridge.postMessage) {
			try {
				window.NativeBridge.postMessage(JSON.stringify(params)); // app 交互 postmessage需要json
			} catch (error) {
				console.log(error.message, ' error.message')
			}
		}
	} else if (window.webkit) {
		if (window.webkit.messageHandlers && window.webkit.messageHandlers.NativeBridge) {
			try {
				window.webkit.messageHandlers.NativeBridge.postMessage(JSON.stringify(params)); // app 交互 postmessage需要json
			} catch (error) {
				console.log(error.message, ' error.message')
			}
		}
	} else {
		/**
	 * 兼容单项目启动为H5情况 WXS 
	 */
		if (typeof plus == 'undefined') {
			if (!window.parent || window.parent == window) {
				switch (params.action) {
					case "navigateTo":
						uni.navigateTo({
							url: params.data,
							notInFrame: true
						});
						break;
					case "navigateBack":
						uni.navigateBack({
							notInFrame: true
						});
						break;
					case "redirectTo":
						uni.redirectTo({
							url: params.data,
							notInFrame: true
						});
						break;
				}
			} else {
				window.parent.postMessage(params, "*");
			}
		} else {
			uni.webView.postMessage({
				data: params
			});
		}
	}



}



/**
 * 
 * anthor liyingqi
 *  834777203@qq.com
 * desc 文件上传
 */

export const uploadFile = (file) => {
	return new Promise((reslove, reject) => {
		uni.showLoading({ title: '上传中...', mask: true });
		uni.uploadFile({
			url: 'https://app.gluz.com.cn/api/common/upload', // 替换为实际接口
			filePath: file.path,
			name: 'file',
			success: (res) => {
				uni.hideLoading();
				if (res.statusCode === 200) {
					var json = JSON.parse(res.data)

					if (json.code == 1) {
						// uni.showToast({ title: '上传成功' });
						reslove(json.data)
					} else {
						uni.showToast({
							title: json.msg,
							icon: 'none'
						})
					}
					// 处理返回数据
				} else {
					uni.showToast({ title: '上传失败', icon: 'none' });
					reject('上传失败')
				}
			},
			fail: (err) => {
				uni.hideLoading();
				uni.showToast({ title: '上传出错', icon: 'none' });
				reject('上传失败')
			}
		});
	})

};



/**
 * 
 * anthor liyingqi
 *  834777203@qq.com
 * desc 图片视频选择封装
 * parmas  type 文件类型 size 文件尺寸限制
 */

const checkFileType = (type, accept = ['image/jpeg', 'image/png', 'image/jpg']) => {
	const allowedTypes = accept;
	return allowedTypes.includes(type.toLowerCase());
}

const checkFileSize = (size, limit = 5) => {
	const maxSize = limit * 1024 * 1024;
	return size <= maxSize;
}

export const chooseFile = ({ type, size, count }) => {
	return new Promise((reslove, reject) => {
		switch (type) {
			case 'image':
				uni.chooseImage({
					count: 1, // 最多选择数量
					sourceType: ['album', 'camera'], // 来源为相册或相机
					success: (res) => {
						const file = res.tempFiles[0];
						// 检查文件类型
						if (!checkFileType(file.type)) {
							uni.showToast({ title: '支持jpeg、jpg、png', icon: 'none' });
							return;
						}
						// 检查文件大小
						if (!checkFileSize(file.size, size)) {
							uni.showToast({ title: `图片大小不能超过${size}MB`, icon: 'none' });
							return;
						}
						reslove(file)
					},
					fail: (err) => {
						reject(err)
					}
				})
				break;
			case 'video':
				uni.chooseVideo({
					count,
					sourceType: ['album', 'camera'],
					success: (res) => {
						const file = res.tempFile;
						// 检查文件类型
						if (!checkFileType(file.type, ['video/mp4', 'video/rmvb', 'video/avi'])) {
							uni.showToast({ title: '支持mp4、rmvb、AVi', icon: 'none' });
							return;
						}
						// 检查文件大小
						if (!checkFileSize(file.size, size)) {
							uni.showToast({ title: `视频大小不能超过${size}MB`, icon: 'none' });
							return;
						}
						file.path = res.tempFilePath;
						reslove(file)
					},
					fail: (err) => {
						reject(err)
					}
				})
				break;
		}
	})


}

// 结束

/**
 * 根据国家ID获取国家信息
 * @param id 国家ID
 * @returns 返回对应的国家信息对象,包含name(国家名称)、imgurl(国旗图片路径)、id(国家ID)
 * @example
 * const country = createNational(0); 
 * // 返回 {name: '中国', imgurl: '/static/country/2.png', id: 0}
 */
export const createNational = (id) => {
	id = id === null ? 0 : id;
	const nationals = [
		{
			name: '中国',
			imgurl: "/static/country/2.png", 
			id: 0,
		},
		{
			name: '俄罗斯',
			imgurl: "/static/country/8.png",
			id: 1,
		},
		{
			name: '哈萨克斯坦',
			imgurl: "/static/country/6.png",
			id: 2,
		},
		{
			name: '白俄罗斯', 
			imgurl: "/static/country/3.png",
			id: 3,
		},
		{
			name: '吉尔吉斯斯坦',
			imgurl: "/static/country/4.png",
			id: 4,
		},
		{
			name: '乌兹别克斯坦',
			imgurl: "/static/country/5.png",
			id: 5,
		},
		{
			name: '土库曼斯坦',
			imgurl: "/static/country/1.png",
			id: 6,
		},
		{
			name: '乌克兰',
			imgurl: "/static/country/7.png",
			id: 7,
		},
		{
			name: '塔吉克斯坦',
			imgurl: "/static/country/9.png",
			id: 8,
		},
	];
	return nationals.find(item => item.id === id) ? nationals.find(item => item.id === id) : nationals[0];
}

export const getNational = ()=> {
	const nationals = [
		{
			name: '中国',
			imgurl: "/static/country/2.png", 
			id: 0,
		},
		{
			name: '俄罗斯',
			imgurl: "/static/country/8.png",
			id: 1,
		},
		{
			name: '哈萨克斯坦',
			imgurl: "/static/country/6.png",
			id: 2,
		},
		{
			name: '白俄罗斯', 
			imgurl: "/static/country/3.png",
			id: 3,
		},
		{
			name: '吉尔吉斯斯坦',
			imgurl: "/static/country/4.png",
			id: 4,
		},
		{
			name: '乌兹别克斯坦',
			imgurl: "/static/country/5.png",
			id: 5,
		},
		{
			name: '土库曼斯坦',
			imgurl: "/static/country/1.png",
			id: 6,
		},
		{
			name: '乌克兰',
			imgurl: "/static/country/7.png",
			id: 7,
		},
		{
			name: '塔吉克斯坦',
			imgurl: "/static/country/9.png",
			id: 8,
		},
	];
	return nationals;
}


/**
 * 根据会员等级获取会员信息
 * @param level 会员等级
 * @returns 返回对应会员信息对象,包含name(会员名称)、imgurl(会员图片路径)、id(会员等级)
 * @example
 * const member = memberLevel(0);    
 * // 返回 {name: '普通会员', imgurl: '/static/img/member1.png', id: 0}
 */
export const memberLevel = (level) => {
  level = level === null ? 0 : level;
  let levels = [
    {
      name: '普通商家',
      imgurl: "/static/work/member0.png",
      id: 0,
    },
    {
      name: '黄金商家',
      imgurl: "/static/work/member1.png",
      id: 1,
    },
    {
      name: '白金商家',
      imgurl: "/static/work/member2.png",
      id: 2,
    },
    {
      name: '钻石商家',
      imgurl: "/static/work/member3.png",
      id: 3,
    },
  ]
  return levels.find(item => item.id === Number(level)) ?  levels.find(item => item.id === Number(level)) : levels[0];
}



// token拦截 1212
export const validToken = ()=> {
	return new Promise((resolve, reject) => {
		uni.request({
			url: 'https://app.gluz.com.cn/api/user/check_token', //接口地址：前缀+方法中传入的地址
			method: 'POST', //请求方法：传入的方法或者默认是“GET”
			data:  {
				user_id: uni.getStorageSync('user_id'),
				token: uni.getStorageSync('xzdToken')
			}, //传递参数：传入的参数或者默认传递空集合
			success: (res) => {
				if (res.data.code == 1) {
					resolve(res);
				} else {
					reject(res);
					isMessageGo({
						action: 'login',
					})
				}

			},
			// 这里的接口请求，如果出现问题就输出接口请求失败
			fail: (err) => {
				reject(err)
				isMessageGo({
					action: 'login',
				})
			}
		})
	})
	
}




